home *** CD-ROM | disk | FTP | other *** search
/ Spanish Scene 1 / SpanishScene1.iso / spanish pack n°1 by llfb / --llfb-- / programas / sources1.dms / sources1.adf / SOURCES / Campos_de_estrellas / 3DSpriteStars.ASM next >
Assembly Source File  |  1996-06-04  |  4KB  |  197 lines

  1.  
  2.     Section    Roman,code_c
  3.  
  4. aantal    =    99    ;163
  5.     move.l    #run,$80
  6.     trap    #0
  7.     rts
  8. run:
  9.     movem.l    d0-d7/a0-a6,-(sp)
  10.     move.l    #$50000,a0
  11.     move.l    #5120,d0
  12. clr_bitmap:
  13.     clr.l    (a0)+
  14.     dbra    d0,clr_bitmap
  15.     bsr.w    star_init
  16.  
  17.     move.l    4,a6
  18.     jsr    -132(a6)
  19.     move.w    #$03f0,$dff096
  20.     move.l    #copperlist,$dff080
  21.     clr.w    $dff088
  22.     move.w    #$83c0,$dff096
  23.     move.w    #$4000,$dff09a
  24.     move.l    $6c,oldirq
  25.     move.l    #irq,$6c
  26.     move.w    #$c010,$dff09a
  27.  
  28. wait:
  29.     cmp.b    #$50,$dff006
  30.     bne.B    wait
  31.     move.w    #$0111,$dff180
  32.     bsr.w    stars
  33.     move.w    #$0,$dff180
  34.  
  35.     btst    #6,$bfe001
  36.     bne.B    wait
  37.  
  38.     move.w    #$4010,$dff09a
  39.     move.l    oldirq,$6c
  40.     move.w    #$c000,$dff09a
  41.     move.l    #gfxlib,a1
  42.     move.l    4,a6
  43.     jsr    -408(a6)
  44.     move.l    d0,a4
  45.     move.w    #$03ff,$dff096
  46.     move.l    38(a4),$dff080
  47.     clr.w    $dff088
  48.     move.w    #$83f0,$dff096
  49.     move.l    a4,a1
  50.     jsr    -414(a6)
  51.     jsr    -138(a6)
  52.     movem.l    (sp)+,d0-d7/a0-a6
  53.     rte
  54. irq:
  55.     movem.l    d0-d7/a0-a6,-(a7)
  56.     movem.l    (a7)+,d0-d7/a0-a6
  57.     dc.w    $4ef9
  58. oldirq:    dc.l    0
  59. copperlist:
  60.     dc.w    $00e0,$0005,$00e2,$0000,$0102,$0000
  61.     dc.w    $00e4,$0005,$00e6,$2800
  62.     dc.w    $0100,$2200,$0104,$0000,$0108,$0000,$010a,$0000
  63.     dc.w    $008e,$3081,$0090,$30c1,$0092,$0038,$0094,$00d0
  64.     dc.w    $0180,$0000,$0182,$0555,$0184,$0aaa,$0186,$0fff
  65.     dc.w    $ffff,$fffe
  66. gfxlib:
  67.     dc.b    "graphics.library",0
  68.     even
  69.  
  70. star_init:
  71.  
  72. ;generiere random
  73.  
  74.      MOVE.W    #aantal,D3
  75.      lea    ran_tab(pc),A0
  76. ran_loop:
  77.     BSR.W    get_ran        ;get randomvalue
  78.     add.w    #4008,d0
  79.  
  80.      MOVE.W    D0,(A0)+        ;nach a0+
  81.      BSR.W    get_ran        ;noch eine
  82.  
  83.     add.w    #4008,d0
  84.      MOVE.W    D0,(A0)+        ;und save
  85.      BSR.W    get_ran        ;noch eine
  86.  
  87.      ANDI.W    #$1FF,D0        ;kleiner 512
  88.      MOVE.W    D0,(A0)+        ;und save
  89.      DBRA    D3,ran_loop
  90.     rts        
  91.     
  92. stars:
  93.     lea    ran_tab(pc),A4    ;randomtab nach a4    
  94.      MOVE.W    #aantal,D3        ;70 mal
  95.      lea    ran2_tab(pc),A5    ;newtab nach a5
  96. star_loop:
  97.     MOVE.W    (A4)+,D4        
  98.      MOVE.W    (A4)+,D5
  99.      MOVE.W    (A4),D6
  100.      SUBq.W    #2,(A4)+        ;erniedrige a4 um 2
  101.      TST.W    D6        ;6 = 0
  102.      BLE.W    L0584BE        ;kleiner
  103.      EXT.L    D4        ;d4 zu longword
  104.     DIVS    D6,D4        ;dividiere d4/d6 horizontal
  105.      ADDI.W    #160,D4        ;+160 = mitte
  106.     EXT.L    D5        ;erweitere d5
  107.      DIVS    D6,D5        ;divi vertical
  108.      ADDI.W    #128,D5        ;+128 = mitte        
  109.      TST.W    D4        ; d4 = 0
  110.      BLT.W    L0584BE        ; ja neue randomwerte
  111.      TST.W    D5        ; d5 = 0
  112.      BLT.W    L0584BE        ; neue werte
  113.      CMPI.W    #319,D4        ; ende horizontal
  114.      BGT.W    L0584BE        ;neue werte
  115.      CMPI.W    #255,D5        ;ende vertical
  116.      BGT.B    L0584BE        ;neue werte
  117.      MOVE.W    (A5),D0        ;a5 nach d0
  118.      MOVE.W    D4,(A5)+        ;d4 rett
  119.      MOVE.W    (A5),D1        ;a5 nach d1
  120.      MOVE.W    D5,(A5)+        ;d5 rett
  121.      BSR.W    loesch        ;loesch star
  122.      MOVE.W    D4,D0        ;d4 nach d0 = x
  123.      MOVE.W    D5,D1        ;d5 nach d1 = y
  124.      MULU    #$28,D1        ;zeile
  125.      MOVE.W    D0,D2        ;d0 nach d2
  126.      ASR.W    #3,D2        ;durch 8
  127.      ADD.W    D2,D1        ;add zur zeile die spalte
  128.      ASL.W     #3,D2        ;mal 8
  129.     SUB.W    D0,D2        ;?
  130.     SUBQ.B    #1,D2        ;minus 1
  131.      CMPI.W    #350,D6        ; d6 = 400        
  132.      BGT.S    L058428        ;groesser > 58428
  133.      CMPI.W    #250,D6        ;d6 = 300        
  134.      BGT.S    L058434        ; groesser = 58434 
  135.      BRA.S    L058440        ;ansonnsten 58440
  136. L058428:
  137.     lea    $50000,A1
  138.      BSET    D2,(A1,d1.l)
  139.      BRA.B    L058454
  140. L058434:
  141.     lea    $50000+$2800,A1
  142.      BSET    D2,(A1,d1)
  143.      BRA.B    L058454
  144. L058440:
  145.     lea    $50000,A1
  146.      BSET    D2,(A1,d1)
  147.      lea    $50000+$2800,A1
  148.      BSET    D2,(A1,d1)
  149. L058454:
  150.     DBRA    D3,star_loop
  151.  
  152.      RTS
  153.     ran_pointer:    dc.w    0
  154. get_ran:
  155.     move.w    $dff006,d0
  156.      LEA    l058604(pc),A3
  157.      MULS    (A3),D0
  158.      ADDI.W    #$1249,D0
  159.      EXT.L    D0
  160.      LEA    L058604(PC),A3
  161.      MOVE.W    D0,(A3)
  162.     RTS
  163. L0584BE:
  164.     SUBq.w    #6,A4
  165.     BSR.B    get_ran
  166.  
  167.      MOVE.W    D0,(A4)+
  168.      BSR.B    get_ran
  169.  
  170.      MOVE.W    D0,(A4)+
  171.      BSR.B    get_ran
  172.  
  173.     and.w    #600,d0     
  174.     MOVE.W    d0,(A4)+
  175.      BRA.B    L058454
  176.  
  177. loesch:
  178.     MULU    #$28,D1
  179.      MOVE.W    D0,D2
  180.      ASR.W    #3,D2
  181.      ADD.W    D2,D1
  182.      ASL.W    #3,D2
  183.      SUB.W    D0,D2
  184.      SUBQ.w    #1,D2
  185.      lea    $50000,A1
  186.      BCLR    D2,(A1,d1)
  187.      lea    $50000+$2800,A1
  188.      BCLR    D2,(A1,d1)
  189.      RTS
  190.  
  191. l058604:dc.w    0
  192.     dc.w    0
  193. ran_tab:
  194.     blk.w    [aantal+1]*3,0
  195. ran2_tab:
  196.     blk.w    [aantal*3]*3,0
  197.